home *** CD-ROM | disk | FTP | other *** search
/ The Original Shareware 1.1 / The Original Shareware (WeMake CDs)(Volume 1.1)(CDs, Inc)(1993).iso / 6 / cl0588.zip / DESKTOP.LST < prev    next >
File List  |  1988-05-01  |  26KB  |  497 lines

  1.      Clist version 05.01.88 on 05/01/88                                                                     Source file DESKTOP.C
  2.      Author: Kernighan & Ritchie                                   
  3.                                                Clist demonstration using K&R pages 74-79
  4.  
  5.          1/1             /*.t|Clist demonstration using K&R pages 74-79*//*.function .author Kernighan & Ritchie*/
  6.          2/2             /* A $2,000 desktop calculator that isn't even programmable! */
  7.          3/3             /* This listing produced using the following command line:
  8.          4/4                CL -G -H -C -PBI DESKTOP
  9.          5/5             */
  10.          6/6             
  11.          7/7             /* .noin              Don't include the (long) standard headers */
  12.          8/8             #include <stdio.h>
  13.          9/9             #include <math.h>
  14.         10/10            /* .incl                Include the other files */
  15.         11/11            
  16.         12/12            #define MAXOP   20
  17.         13/13            #define NUMBER  '0'
  18.         14/14            #define TOOBIG  '9'
  19.         15/15            
  20.         16/16            #include <stack.c>
  21.  
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.                                                                                                                           Page 001      Clist version 05.01.88 on 05/01/88                Include file STACK.C                                 Source file DESKTOP.C
  64.      Author: Kernighan & Ritchie                                   
  65.                                                Clist demonstration using K&R pages 74-79
  66.                                                stack routines for the desktop calculator
  67.  
  68.      STACK.C:
  69.         17/1             /* .subt | stack routines for the desktop calculator */
  70.         18/2             
  71.         19/3             #define MAXVAL 100
  72.         20/4             
  73.         21/5             EintF  sp = 0;
  74.         22/6             EdoubleF  val[MAXVAL];
  75.         23/7             
  76.         24/8             EdoubleF push(f)
  77.         25/9             EdoubleF f;
  78.         26/10   ┌─────── {
  79.         27/11   │          EifF (sp < MAXVAL)
  80.         28/12   │               EreturnF(val[sp++] = f);
  81.         29/13   │┌──────── EelseF {
  82.         30/14   ││              printf("error: stack full\n");
  83.         31/15   ││              clear();
  84.         32/16   ││              EreturnF(0.0);
  85.         33/17   │└──────── }
  86.         34/18   └─────── }
  87.         35/19            
  88.         36/20            EdoubleF pop()
  89.         37/21   ┌─────── {
  90.         38/22   │          EifF (sp > 0)
  91.         39/23   │               EreturnF(val[--sp]);
  92.         40/24   │┌──────── EelseF {
  93.         41/25   ││              printf("error: stack empty\n");
  94.         42/26   ││              clear();
  95.         43/27   ││              EreturnF(0.0);
  96.         44/28   │└──────── }
  97.         45/29   └─────── }
  98.         46/30            
  99.         47/31            clear()
  100.         48/32   ┌─────── {
  101.         49/33   │          sp = 0;
  102.         50/34   └─────── }
  103.         51/35            
  104.         52/36            /* .subt < end of file, stack.c */
  105.         53/37            
  106.  
  107.      DESKTOP.C:
  108.         54/17            #include <getop.c>
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125.                                                                                                                           Page 002      Clist version 05.01.88 on 05/01/88                Include file GETOP.C                                 Source file DESKTOP.C
  126.      Author: Kernighan & Ritchie                                   
  127.                                                Clist demonstration using K&R pages 74-79
  128.                                                Get operation type for desktop calculator
  129.  
  130.      GETOP.C:
  131.         55/1             /* .subt |Get operation type for desktop calculator */
  132.         56/2             
  133.         57/3             getop(s,lim)
  134.         58/4             EcharF s[];
  135.         59/5             EintF  lim;
  136.         60/6    ┌─────── {
  137.         61/7    │          EintF  i, c;
  138.         62/8    │        
  139.         63/9    │          EwhileF ((c = getch()) == ' ' || c == '\t' || c == '\n')
  140.         64/10   │                ;
  141.         65/11   │          EifF (c != '.' && (c < '0' || c > '9'))
  142.         66/12   │                EreturnF(c);
  143.         67/13   │          s[0] = c;
  144.         68/14   │          EforF (i = 1; (c = getchar()) >= '0' && c <= '9'; i++)
  145.         69/15   │              EifF (i < lim)
  146.         70/16   │                 s[i] = c;
  147.         71/17   │┌──────── EifF (c == '.') {
  148.         72/18   ││            EifF (i < lim)
  149.         73/19   ││               s[i] = c;
  150.         74/20   ││            EforF (i++; (c = getchar()) >= '0' && c <= '9'; i++)
  151.         75/21   ││                EifF (i<lim)
  152.         76/22   ││                   s[i] = c;
  153.         77/23   │└──────── }
  154.         78/24   │┌──────── EifF (i < lim) {
  155.         79/25   ││            ungetch(c);
  156.         80/26   ││            s[i] = '\0';
  157.         81/27   ││            EreturnF(NUMBER);
  158.         82/28   │└──────── }
  159.         83/29   │┌──────── EelseF {
  160.         84/30   ││           EwhileF (c != '\n' && c != EOF)
  161.         85/31   ││                 c = getchar();
  162.         86/32   ││                 s[lim-1] = '\0';
  163.         87/33   ││                 EreturnF(TOOBIG);
  164.         88/34   │└──────── }
  165.         89/35   └─────── }
  166.         90/36            
  167.         91/37            /* .subt < end of file, file getop.c */
  168.         92/38            
  169.  
  170.      DESKTOP.C:
  171.         93/18            #include <getch.c>
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.                                                                                                                           Page 003      Clist version 05.01.88 on 05/01/88                Include file GETCH.C                                 Source file DESKTOP.C
  188.      Author: Kernighan & Ritchie                                   
  189.                                                Clist demonstration using K&R pages 74-79
  190.                                         Get and save character routines for desktop calculator
  191.  
  192.      GETCH.C:
  193.         94/1             /* .subt | Get and save character routines for desktop calculator */
  194.         95/2             
  195.         96/3             #define BUFSIZE  100
  196.         97/4             
  197.         98/5             EcharF buf[BUFSIZE];
  198.         99/6             EintF  bufp = 0;
  199.        100/7             
  200.        101/8             getch()
  201.        102/9    ┌─────── {
  202.        103/10   │          EreturnF((bufp > 0) ? buf[--bufp] : getchar());
  203.        104/11   └─────── }
  204.        105/12            
  205.        106/13            ungetch(c)
  206.        107/14            EintF c;
  207.        108/15   ┌─────── {
  208.        109/16   │          EifF (bufp > BUFSIZE)
  209.        110/17   │             printf("ungetch: too many characters\n");
  210.        111/18   │          EelseF
  211.        112/19   │            buf[bufp++] = c
  212.        113/20   └─────── }
  213.        114/21            
  214.        115/22            /* .subt < end of file, file getch.c */
  215.        116/23            
  216.  
  217.      DESKTOP.C:
  218.        117/19            
  219.        118/20            main()
  220.        119/21   ┌─────── {
  221.        120/22   │          EintF     type;
  222.        121/23   │          EcharF    s[MAXOP];
  223.        122/24   │          EdoubleF  op2, atof(), pop(), push();
  224.        123/25   │        
  225.        124/26   │┌──────── EwhileF ((type = getop(s,maxop)) != EOF) {
  226.        125/27   ││       
  227.        126/28   ││┌───────── EswitchF (type) {
  228.        127/29   │││      
  229.        128/30   │││          EcaseF NUMBER:
  230.        129/31   │││               push(atof(s));
  231.        130/32   │││               EbreakF;
  232.        131/33   │││          EcaseF '+':
  233.        132/34   │││               push(pop() + pop());
  234.        133/35   │││               EbreakF;
  235.        134/36   │││          EcaseF '*':
  236.        135/37   │││               push(pop() * pop());
  237.        136/38   │││               EbreakF;
  238.        137/39   │││          EcaseF '-':
  239.        138/40   │││               op2 = pop();
  240.        139/41   │││               push(pop() - op2);
  241.        140/42   │││               EbreakF;
  242.        141/43   │││          EcaseF '/':
  243.        142/44   │││               op2 = pop();
  244.        143/45   │││               EifF (op2 != 0.0)
  245.        144/46   │││                   push(pop() / op2);
  246.        145/47   │││               EelseF
  247.        146/48   │││                   printf("Zero divisor popped\n");
  248.  
  249.                                                                                                                           Page 004      Clist version 05.01.88 on 05/01/88                                                                     Source file DESKTOP.C
  250.      Author: Kernighan & Ritchie                                                                                  function main()
  251.                                                Clist demonstration using K&R pages 74-79
  252.  
  253.        147/49   │││               EbreakF;
  254.        148/50   │││          EcaseF '=':
  255.        149/51   │││               printf("\t%f\n",push(pop()));
  256.        150/52   │││               EbreakF;
  257.        151/53   │││          EcaseF 'c':
  258.        152/54   │││               clear();
  259.        153/55   │││               EbreakF;
  260.        154/56   │││          EcaseF TOOBIG:
  261.        155/57   │││               printf("%.20s ... is too long\n");
  262.        156/58   │││               EbreakF;
  263.        157/59   │││          EdefaultF:
  264.        158/60   │││               printf("unknown command %c\n",type);
  265.        159/61   │││               EbreakF;
  266.        160/62   ││└──────── }
  267.        161/63   │└────── }
  268.        162/64   │        
  269.        163/65   │        /* end of program, desktop.c */
  270.        164/66   │        
  271.  
  272.  
  273.  
  274.  
  275.  
  276.  
  277.  
  278.  
  279.  
  280.  
  281.  
  282.  
  283.  
  284.  
  285.  
  286.  
  287.  
  288.  
  289.  
  290.  
  291.  
  292.  
  293.  
  294.  
  295.  
  296.  
  297.  
  298.  
  299.  
  300.  
  301.  
  302.  
  303.  
  304.  
  305.  
  306.  
  307.  
  308.  
  309.  
  310.  
  311.                                                                                                                           Page 005      Clist version 05.01.88 on 05/01/88                                                                     Source file DESKTOP.C
  312.                                                         Cross-reference listing
  313.                                                                Functions
  314.  
  315.                      atof():  page 004, line 122;   file DESKTOP.C,    line 24   in function main()              
  316.                               page 004, line 129;   file DESKTOP.C,    line 31   in function main()              
  317.                     clear():  page 002, line 31;    file STACK.C,      line 15   in function push()              
  318.                               page 002, line 42;    file STACK.C,      line 26   in function pop()               
  319.                               page 002, line 47;    file STACK.C,      line 31   defined
  320.                               page 005, line 152;   file DESKTOP.C,    line 54   in function main()              
  321.                     getch():  page 003, line 63;    file GETOP.C,      line 9    in function getop()             
  322.                               page 004, line 101;   file GETCH.C,      line 8    defined
  323.                   getchar():  page 003, line 68;    file GETOP.C,      line 14   in function getop()             
  324.                               page 003, line 74;    file GETOP.C,      line 20   in function getop()             
  325.                               page 003, line 85;    file GETOP.C,      line 31   in function getop()             
  326.                               page 004, line 103;   file GETCH.C,      line 10   in function getch()             
  327.                     getop():  page 003, line 57;    file GETOP.C,      line 3    defined
  328.                               page 004, line 124;   file DESKTOP.C,    line 26   in function main()              
  329.                      main():  page 004, line 118;   file DESKTOP.C,    line 20   defined
  330.                       pop():  page 002, line 36;    file STACK.C,      line 20   defined
  331.                               page 004, line 122;   file DESKTOP.C,    line 24   in function main()              
  332.                               page 004, line 132;   file DESKTOP.C,    line 34   in function main()              
  333.                               page 004, line 135;   file DESKTOP.C,    line 37   in function main()              
  334.                               page 004, line 138;   file DESKTOP.C,    line 40   in function main()              
  335.                               page 004, line 139;   file DESKTOP.C,    line 41   in function main()              
  336.                               page 004, line 142;   file DESKTOP.C,    line 44   in function main()              
  337.                               page 004, line 144;   file DESKTOP.C,    line 46   in function main()              
  338.                               page 005, line 149;   file DESKTOP.C,    line 51   in function main()              
  339.                    printf():  page 002, line 30;    file STACK.C,      line 14   in function push()              
  340.                               page 002, line 41;    file STACK.C,      line 25   in function pop()               
  341.                               page 004, line 110;   file GETCH.C,      line 17   in function ungetch()           
  342.                               page 004, line 146;   file DESKTOP.C,    line 48   in function main()              
  343.                               page 005, line 149;   file DESKTOP.C,    line 51   in function main()              
  344.                               page 005, line 155;   file DESKTOP.C,    line 57   in function main()              
  345.                               page 005, line 158;   file DESKTOP.C,    line 60   in function main()              
  346.                      push():  page 002, line 24;    file STACK.C,      line 8    defined
  347.                               page 004, line 122;   file DESKTOP.C,    line 24   in function main()              
  348.                               page 004, line 129;   file DESKTOP.C,    line 31   in function main()              
  349.                               page 004, line 132;   file DESKTOP.C,    line 34   in function main()              
  350.                               page 004, line 135;   file DESKTOP.C,    line 37   in function main()              
  351.                               page 004, line 139;   file DESKTOP.C,    line 41   in function main()              
  352.                               page 004, line 144;   file DESKTOP.C,    line 46   in function main()              
  353.                               page 005, line 149;   file DESKTOP.C,    line 51   in function main()              
  354.                   ungetch():  page 003, line 79;    file GETOP.C,      line 25   in function getop()             
  355.                               page 004, line 106;   file GETCH.C,      line 13   defined
  356.  
  357.  
  358.  
  359.  
  360.  
  361.  
  362.  
  363.  
  364.  
  365.  
  366.  
  367.  
  368.  
  369.  
  370.  
  371.  
  372.  
  373.                                                                                                                           Page 006      Clist version 05.01.88 on 05/01/88                                                                     Source file DESKTOP.C
  374.                                                         Cross-reference listing
  375.                                                         Variables and Constants
  376.  
  377.                     BUFSIZE:  page 004, line 96;    file GETCH.C,      line 3    defined
  378.                               page 004, line 98;    file GETCH.C,      line 5    defined
  379.                               page 004, line 109;   file GETCH.C,      line 16   in function ungetch()           
  380.                         EOF:  page 003, line 84;    file GETOP.C,      line 30   in function getop()             
  381.                               page 004, line 124;   file DESKTOP.C,    line 26   in function main()              
  382.                       MAXOP:  page 001, line 12;    file DESKTOP.C,    line 12   defined
  383.                               page 004, line 121;   file DESKTOP.C,    line 23   in function main()              
  384.                      MAXVAL:  page 002, line 19;    file STACK.C,      line 3    defined
  385.                               page 002, line 22;    file STACK.C,      line 6    defined
  386.                               page 002, line 27;    file STACK.C,      line 11   in function push()              
  387.                      NUMBER:  page 001, line 13;    file DESKTOP.C,    line 13   defined
  388.                               page 003, line 81;    file GETOP.C,      line 27   in function getop()             
  389.                               page 004, line 128;   file DESKTOP.C,    line 30   in function main()              
  390.                      TOOBIG:  page 001, line 14;    file DESKTOP.C,    line 14   defined
  391.                               page 003, line 87;    file GETOP.C,      line 33   in function getop()             
  392.                               page 005, line 154;   file DESKTOP.C,    line 56   in function main()              
  393.                         buf:  page 004, line 98;    file GETCH.C,      line 5    defined
  394.                               page 004, line 103;   file GETCH.C,      line 10   in function getch()             
  395.                               page 004, line 112;   file GETCH.C,      line 19   in function ungetch()           
  396.                        bufp:  page 004, line 99;    file GETCH.C,      line 6    defined
  397.                               page 004, line 103;   file GETCH.C,      line 10   in function getch()             
  398.                               page 004, line 109;   file GETCH.C,      line 16   in function ungetch()           
  399.                               page 004, line 112;   file GETCH.C,      line 19   in function ungetch()           
  400.                           c:  page 003, line 61;    file GETOP.C,      line 7    in function getop()             
  401.                               page 003, line 63;    file GETOP.C,      line 9    in function getop()             
  402.                               page 003, line 65;    file GETOP.C,      line 11   in function getop()             
  403.                               page 003, line 66;    file GETOP.C,      line 12   in function getop()             
  404.                               page 003, line 67;    file GETOP.C,      line 13   in function getop()             
  405.                               page 003, line 68;    file GETOP.C,      line 14   in function getop()             
  406.                               page 003, line 70;    file GETOP.C,      line 16   in function getop()             
  407.                               page 003, line 71;    file GETOP.C,      line 17   in function getop()             
  408.                               page 003, line 73;    file GETOP.C,      line 19   in function getop()             
  409.                               page 003, line 74;    file GETOP.C,      line 20   in function getop()             
  410.                               page 003, line 76;    file GETOP.C,      line 22   in function getop()             
  411.                               page 003, line 79;    file GETOP.C,      line 25   in function getop()             
  412.                               page 003, line 84;    file GETOP.C,      line 30   in function getop()             
  413.                               page 003, line 85;    file GETOP.C,      line 31   in function getop()             
  414.                               page 004, line 106;   file GETCH.C,      line 13   defined
  415.                               page 004, line 107;   file GETCH.C,      line 14   defined
  416.                               page 004, line 112;   file GETCH.C,      line 19   in function ungetch()           
  417.                           f:  page 002, line 24;    file STACK.C,      line 8    defined
  418.                               page 002, line 25;    file STACK.C,      line 9    defined
  419.                               page 002, line 28;    file STACK.C,      line 12   in function push()              
  420.                           i:  page 003, line 61;    file GETOP.C,      line 7    in function getop()             
  421.                               page 003, line 68;    file GETOP.C,      line 14   in function getop()             
  422.                               page 003, line 69;    file GETOP.C,      line 15   in function getop()             
  423.                               page 003, line 70;    file GETOP.C,      line 16   in function getop()             
  424.                               page 003, line 72;    file GETOP.C,      line 18   in function getop()             
  425.                               page 003, line 73;    file GETOP.C,      line 19   in function getop()             
  426.                               page 003, line 74;    file GETOP.C,      line 20   in function getop()             
  427.                               page 003, line 75;    file GETOP.C,      line 21   in function getop()             
  428.                               page 003, line 76;    file GETOP.C,      line 22   in function getop()             
  429.                               page 003, line 78;    file GETOP.C,      line 24   in function getop()             
  430.                               page 003, line 80;    file GETOP.C,      line 26   in function getop()             
  431.                         lim:  page 003, line 57;    file GETOP.C,      line 3    defined
  432.                               page 003, line 59;    file GETOP.C,      line 5    defined
  433.                               page 003, line 69;    file GETOP.C,      line 15   in function getop()             
  434.  
  435.                                                                                                                           Page 007      Clist version 05.01.88 on 05/01/88                                                                     Source file DESKTOP.C
  436.                                                         Cross-reference listing
  437.                                                 Variables and Constants - "lim" cont'd
  438.  
  439.                               page 003, line 72;    file GETOP.C,      line 18   in function getop()             
  440.                               page 003, line 75;    file GETOP.C,      line 21   in function getop()             
  441.                               page 003, line 78;    file GETOP.C,      line 24   in function getop()             
  442.                               page 003, line 86;    file GETOP.C,      line 32   in function getop()             
  443.                       maxop:  page 004, line 124;   file DESKTOP.C,    line 26   in function main()              
  444.                         op2:  page 004, line 122;   file DESKTOP.C,    line 24   in function main()              
  445.                               page 004, line 138;   file DESKTOP.C,    line 40   in function main()              
  446.                               page 004, line 139;   file DESKTOP.C,    line 41   in function main()              
  447.                               page 004, line 142;   file DESKTOP.C,    line 44   in function main()              
  448.                               page 004, line 143;   file DESKTOP.C,    line 45   in function main()              
  449.                               page 004, line 144;   file DESKTOP.C,    line 46   in function main()              
  450.                           s:  page 003, line 57;    file GETOP.C,      line 3    defined
  451.                               page 003, line 58;    file GETOP.C,      line 4    defined
  452.                               page 003, line 67;    file GETOP.C,      line 13   in function getop()             
  453.                               page 003, line 70;    file GETOP.C,      line 16   in function getop()             
  454.                               page 003, line 73;    file GETOP.C,      line 19   in function getop()             
  455.                               page 003, line 76;    file GETOP.C,      line 22   in function getop()             
  456.                               page 003, line 80;    file GETOP.C,      line 26   in function getop()             
  457.                               page 003, line 86;    file GETOP.C,      line 32   in function getop()             
  458.                               page 004, line 121;   file DESKTOP.C,    line 23   in function main()              
  459.                               page 004, line 124;   file DESKTOP.C,    line 26   in function main()              
  460.                               page 004, line 129;   file DESKTOP.C,    line 31   in function main()              
  461.                          sp:  page 002, line 21;    file STACK.C,      line 5    defined
  462.                               page 002, line 27;    file STACK.C,      line 11   in function push()              
  463.                               page 002, line 28;    file STACK.C,      line 12   in function push()              
  464.                               page 002, line 38;    file STACK.C,      line 22   in function pop()               
  465.                               page 002, line 39;    file STACK.C,      line 23   in function pop()               
  466.                               page 002, line 49;    file STACK.C,      line 33   in function clear()             
  467.                        type:  page 004, line 120;   file DESKTOP.C,    line 22   in function main()              
  468.                               page 004, line 124;   file DESKTOP.C,    line 26   in function main()              
  469.                               page 004, line 126;   file DESKTOP.C,    line 28   in function main()              
  470.                               page 005, line 158;   file DESKTOP.C,    line 60   in function main()              
  471.                         val:  page 002, line 22;    file STACK.C,      line 6    defined
  472.                               page 002, line 28;    file STACK.C,      line 12   in function push()              
  473.                               page 002, line 39;    file STACK.C,      line 23   in function pop()               
  474.  
  475.  
  476.  
  477.  
  478.  
  479.  
  480.  
  481.  
  482.  
  483.  
  484.  
  485.  
  486.  
  487.  
  488.  
  489.  
  490.  
  491.  
  492.  
  493.  
  494.  
  495.  
  496.  
  497.                                                                                                                           Page 008 @